import relate from '@/views/structureManagement/role/elementPermissions/elAuth/config/pageRelate.js';
import types from '@/views/structureManagement/role/elementPermissions/elAuth/types.js';
let obj={
  /**
   * 依据路由获取该页面的元素权限定义
   * @parma $route 路由路径
   * @parma $dbAuth 用户元素权限json
  */
  getPageConfig:($route,$dbAuth={})=>{
    let json=relate[$route].consistObj;
    for(let key in json) {
      json[key].sets=obj.deepClone(types[json[key].module].sets);
      json[key].selfUsed=$dbAuth[key]?true:false;
      if($dbAuth[key]){
        for(let set in json[key].sets){
          if($dbAuth[key][set]){
            json[key].sets[set].value=$dbAuth[key][set];
          }
        }
      }
      if(json[key].options){
        for(let op in json[key].options){
          json[key].sets[op].options=obj.deepClone(json[key].options[op]);
          if($dbAuth[key]){
            json[key].sets[op].value=$dbAuth[key][op];
          }
        }
      }
    }
    return json;
  },
  /**
   * 依据路由获取该页面的元素权限定义
   * @parma $route 路由路径
   * @parma $dbAuth 用户元素权限json
   * @parma $validArr 页面上显示出来的元素权限
   * @parma $json 页面元素权限json配置
  */
  getAuthByJson:($route,$json,$validArr,$dbAuth={})=>{
    let pageAuth={};
    let jsonConfig=obj.deepClone($json);
    for(let key in jsonConfig) {
      if(jsonConfig[key].selfUsed&&$validArr.includes(key)){
        pageAuth[key]={};
        pageAuth[key].onpage=$route+'';
        for(let per in jsonConfig[key].sets){
          if(jsonConfig[key].sets[per].value&&jsonConfig[key].sets[per].value.length){
            pageAuth[key][per]=jsonConfig[key].sets[per].value;
          }
        }
      }
      if(!jsonConfig[key].selfUsed){
        delete $dbAuth[key];
      }
    }
    pageAuth=Object.assign({},$dbAuth,pageAuth);
    return pageAuth;
  },
  /*深拷贝*/
  deepClone($obj) {
  	if(Object.prototype.toString.call($obj) == '[object Object]'){
  		let _obj = JSON.stringify($obj);
  		return JSON.parse(_obj);
  	}
      if(Object.prototype.toString.call($obj) == '[object Array]'){
      	return $obj.slice();
      }
  },
}
export default obj;
